#添加链接库
LINK = -lpthread

#定义变量
ARCH ?= x86
TARGET = main

#存放中间文件的路径
BUILD_DIR = build_$(ARCH)
#存放源文件的文件夹
SRC_DIR = sources	.
#存放头文件的文件夹
INC_DIR = includes	.

#源文件
SRCS = $(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.c))

#目标文件(*.o)
OBJS = $(patsubst %.c, $(BUILD_DIR)/%.o,$(notdir $(SRCS)))
#头文件
INCS =  $(foreach dir,$(INC_DIR),$(wildcard $(dir)/*.h))
#指定头文件的路径
CFLAGS = $(patsubst %,-I%, $(INC_DIR))

#根据输入的ARCH变量来选择编译器
ifeq ($(ARCH),x86)
  CC=gcc
else
  CC = arm-linux-gnueabihf-gcc
endif


#目标文件,连接过程
$(BUILD_DIR)/$(TARGET):$(OBJS)
	sudo $(CC)  $^ $(LINK) -o $@

#编译工程
#不同源文件目录下的.o生成要分开
$(BUILD_DIR)/%.o: sources/%.c $(INCS)  |  create_build
	sudo $(CC) -c $(CFLAGS)	$<	-o	$@ 

$(BUILD_DIR)/%.o: ./%.c $(INCS)  |  create_build
	sudo $(CC) -c $(CFLAGS)	$<	-o	$@ 

#伪目标
.PHONY:clean cleanall  check  create_build
#按架构删除
clean:
	sudo rm -rf $(BUILD_DIR)
#全部删除
cleanall:
	sudo rm -rf build_x86 build_arm
check:
	@echo "额外搜索的头文件路径CFLAGS="$(CFLAGS)
	@echo "源文件SRCS="$(SRCS)
	@echo "目标文件OBJS="$(OBJS)
	@echo "头文件INCS="$(INCS)
create_build:
	@sudo mkdir -p $(BUILD_DIR)         #命令前带@表示不在终端上输出

